/**
 * Author:yuiop
 * Date:2022/3/17 17:16
 */
package com.devops.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.devops.admin.model.DOSCluster;
import com.devops.admin.model.TableResult;
import com.devops.admin.po.DOSClusterNamespacePo;
import com.devops.admin.po.DOSClusterPo;
import com.devops.admin.po.DOSEnvClusterPo;
import com.devops.admin.vo.DOSClusterVo;
import com.devops.admin.vo.DOSK8sIngressVo;
import com.devops.admin.vo.DOSPageVo;

import java.util.List;

public interface DOSClusterService extends IService<DOSCluster> {
    /**
     * @Author heyabo
     * @Description 通过id删除集群
     * @Date 15:36 2022/3/18
     * @Param [clusterId]
     * @return java.lang.Boolean
     **/
    Boolean deleteById(Integer clusterId);

    /**
     * @Author heyabo
     * @Description 分页查询
     * @Date 13:54 2022/3/21
     * @Param []
     * @return com.devops.admin.model.TableResult<com.devops.admin.model.DOSCluster>
     **/
    TableResult<DOSClusterPo> getList(DOSCluster cluster, DOSPageVo pageVo);

    /**
     * @Author heyabo
     * @Description 获取级连
     * @Date 10:56 2022/3/22
     * @Param []
     * @return java.util.List<com.devops.admin.po.DOSClusterNamespacePo>
     **/
    List<DOSEnvClusterPo> getCascade();

    /**
     * @Author heyabo
     * @Description 获取helmUrl
     * @Date 08:54 2022/3/25
     * @Param [projectId]
     * @return java.lang.String
     **/
    String getHelmChartUrl(int projectId);

    void checkCluster(DOSCluster cluster);

    /**
     * @Author heyabo
     * @Description 查询所有集群信息
     * @Date 14:48 2022/6/23
     * @Param [cluster]
     * @return java.util.List<com.devops.admin.po.DOSClusterPo>
     **/
    List<DOSClusterPo> getAllList(DOSCluster cluster);

    /**
     * @Author heyabo
     * @Description 根据登录的用户角色查询集群和命名空间的级联
     * @Date 09:05 2022/7/22
     * @Param []
     * @return java.util.List<com.devops.admin.po.DOSClusterNamespacePo>
     **/
    List<DOSClusterNamespacePo> queryClusterNamespace();

    /**
     * @Author heyabo
     * @Description 保存集群信息
     * @Date 11:18 2022/7/25
     * @Param [clusterVo]
     * @return void
     **/
    TableResult<DOSClusterPo> saveCluster(DOSClusterVo clusterVo);

    /**
     * @Author heyabo
     * @Description 更新集群信息
     * @Date 11:22 2022/7/25
     * @Param [dosEnvClusterRelationService]
     * @return java.lang.Boolean
     **/
    Boolean updateCluster(DOSClusterVo clusterVo);

    /**
     * @Author heyabo
     * @Description 根据集群id和命名空间id查询集群，命名空间，clusterInfo的信息
     * @Date 09:19 2022/9/30
     * @Param [ingressVo]
     * @return java.util.List<com.devops.admin.po.DOSClusterPo>
     **/
    List<DOSClusterPo> getClusterAndNamespaceAndClusterInfo(DOSK8sIngressVo ingressVo);

    /**
     * @Author heyabo
     * @Description 根据集群id和命名空间id查询集群，命名空间，clusterInfo的信息
     * @Date 09:19 2022/9/30
     * @Param [ingressVo]
     * @return java.util.List<com.devops.admin.po.DOSClusterPo>
     **/
    List<DOSClusterPo> getClusterAndNamespaceAndClusterInfo(DOSK8sIngressVo ingressVo,List<Integer> projectIds);
}
